 $LOAD_PATH.unshift File.join(File.dirname(__FILE__),'../..','ext_pr1/lib')
 require 'ext_pr1_v4'
 
#Endrekursion
#
#Methoden aus einfach_mehrfach als Endrekursion

def sum_(accu,n)
(n==0 ? accu : sum_(accu + n, n - 1)) 
end

# sum ::= (var) :: Nat x Nat -> Nat
# 
 def sum(n) 
   check_pre((n.nat?))
   sum_(0,n)
 end
 
###############################################
#Aufgabe 2: 
 #Potenz
 #
 # potenz ::= (x, n) :: Nat x Int -> Nat
 #

 def potenz(x, n)
   check_pre((n.nat?))
    potenz_(x, n, x)
 end
 
 def potenz_(x, n, accu)
  n == 1 ? accu : potenz_(x, n-1, x*accu)
 end